OCAMLC = ocamlc
OCAMLOPT = ocamlopt
OCAMLDEP = ocamldep
OCAMLLEX = ocamllex
OCAMLYACC = ocamlyacc

OBJS = algo.cmo parser.cmo lexer.cmo main.cmo
FILES_TO_REMOVE = $(OBJS) lexer.ml parser.ml parser.mli *.cmi

policy_parser : $(OBJS)
	$(OCAMLC) -o policy_parser $(OBJS)

main.cmo : main.ml
	$(OCAMLC) -c main.ml

lexer.cmo : lexer.ml parser.cmi
	$(OCAMLC) -c lexer.ml
	
parser.cmo : parser.ml
	$(OCAMLC) -c parser.ml
	
parser.ml : parser.mly parser.cmi
	$(OCAMLYACC) parser.mly
	
parser.cmi : parser.mli
	$(OCAMLC) -c parser.mli
	
parser.mli:  parser.mly
	$(OCAMLYACC) parser.mly

lexer.ml : lexer.mll
	$(OCAMLLEX) lexer.mll
	
algo.cmi algo.cmo : algo.ml
	$(OCAMLC) -c algo.ml

clean :
	rm -f $(FILES_TO_REMOVE)
